﻿using System;
using System.Data;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using GC2.Bussines;
using GC2.Bussines.BMAdmin;
using GC2.Entities.Admin;
using GC2.Entities.Seguridad;
using GC2.ExceptionHandler;

public partial class Admin_VerGastos : GenericPage
{
    #region Propiedades

    Usuarios usuario = new Usuarios();
    Compras compraD = new Compras();
    Compras compraH = new Compras();
    List<Compras> listaCompras = new List<Compras>();
    private ExceptionConstructor exNew = new ExceptionConstructor();

    #endregion

    #region Controles

    #region Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            SetearCultura();
            SetearConexion();
            if (!this.IsPostBack)
            {
                usuario = (Usuarios)Session["UsuarioActual"];
                DateTime dHoy = DateTime.Now.Date;
                FechaH.SetFecha(dHoy);
                string sFecha = SetearFecha();
                FechaD.SetFecha(Convert.ToDateTime(sFecha));
                lblAccion.Text = "Parámetros de Búsqueda";
                CargarCCostos();
                rdbTodos.Checked = true;
                cboCCostos.Enabled = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnBuscar_Click
    protected void btnBuscar_Click(object sender, EventArgs e)
    {
        BMCompras bmCompras = new BMCompras(Connection);

        try
        {
            if (txtIdCompra.Text != "")
            {
                compraD = new Compras();
                compraD.Gasto = 1;
                compraD.CCostos = 999;
                compraD.Id_Compras = Convert.ToInt64(txtIdCompra.Text.Trim());
                listaCompras = bmCompras.BMComprasSearch(compraD, compraD);
            }
        }
        catch { compraD.Id_Compras = 0; }

        try
        {
            if (listaCompras.Count == 0)
            {
                compraD.Gasto = 1;

                if (FechaD.GetFecha() != FechaD.FechaNula)
                {
                    compraD.Fecha = FechaD.GetFecha();
                }
                else
                {
                    compraD.Fecha = FechaD.FechaNula;
                }
                if (FechaH.GetFecha() != FechaH.FechaNula)
                {
                    compraH.Fecha = FechaH.GetFecha();
                }
                else
                {
                    compraH.Fecha = FechaD.FechaNula;
                }
                compraD.Id_Estado = 1;
                if (rdbTodos.Checked)
                {
                    compraD.CCostos = 999;  //  reservado para pasar como null este argumento.
                }
                else
                {
                    compraD.CCostos = Convert.ToInt16(cboCCostos.SelectedItem.Value);
                }
                listaCompras = bmCompras.BMComprasSearch(compraD, compraH);
            }

            Session["listaCompras"] = listaCompras;
            if (txtIdCompra.Text != "" && listaCompras.Count == 1)
            {
                Compras compra = new Compras();
                compra.Id_Compras = listaCompras[0].Id_Compras;

                StringBuilder sb = new StringBuilder();
                sb.Append("GastosImpuestos.aspx?Id_Compras=");
                sb.Append(compra.Id_Compras.ToString());
                sb.Append("&Accion=3");

                Response.Redirect(sb.ToString(), false);
            }
            else
            {
                CargarGrilla();
            }
            lblAccion.Text = "Búsqueda Realizada";
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnCancelar_Click
    protected void btnCancelar_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Seguridad/Default.aspx", false);
    }
    #endregion

    #region gvCompras_PageIndexChanging
    protected void gvCompras_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        try
        {
            gvCompras.PageIndex = e.NewPageIndex;
            CargarGrilla();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCompras_SelectedIndexChanged
    protected void gvCompras_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {

            Compras compra = new Compras();
            compra.Id_Compras = Convert.ToInt64(gvCompras.SelectedDataKey.Value);

            StringBuilder sb = new StringBuilder();
            sb.Append("GastosImpuestos.aspx?Id_Compras=");
            sb.Append(compra.Id_Compras.ToString());
            sb.Append("&Accion=3");

            Response.Redirect(sb.ToString(), false);
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region gvCompras_RowDataBound
    protected void gvCompras_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        try
        {

        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnInforme_Click
    protected void btnInforme_Click(object sender, EventArgs e)
    {
        try
        {
            if (Session["listaCompras"] != null)
            {
                List<Compras> listaCompras = (List<Compras>)Session["listaCompras"];
                if (listaCompras.Count > 0)
                {
                    Session["pFechaD"] = FechaD.GetFecha();
                    Session["pFechaH"] = FechaH.GetFecha();
                    Session["iReporte"] = 1;
                     
                    registrarScript();
                }
                else
                {
                    lblAccion.Text = "No hay datos para generar Informe";
                }
            }
            else
            {
                lblAccion.Text = "No hay datos para generar Informe";
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region btnLibro_Click
    protected void btnLibro_Click(object sender, EventArgs e)
    {
        Response.Redirect("~/Informes/LibroCompras.aspx", false);
    }
    #endregion

    #region rdbActivos_CheckedChanged CCostos
    protected void rdbActivos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbActivos.Checked)
            {
                rdbTodos.Checked = false;
                cboCCostos.Enabled = true;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region rdbTodos_CheckedChanged CCostos
    protected void rdbTodos_CheckedChanged(object sender, EventArgs e)
    {
        try
        {
            if (rdbTodos.Checked)
            {
                rdbActivos.Checked = false;
                cboCCostos.SelectedIndex = 0;
                cboCCostos.Enabled = false;
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #endregion

    #region Métodos

    #region CargarGrilla
    private void CargarGrilla()
    {
        try
        {
            listaCompras = (List<Compras>)Session["listaCompras"];
            decimal dTotal = 0;
            foreach (Compras compra in listaCompras)
            {
                dTotal += compra.Total;
            }
            txtTotal.Text = dTotal.ToString();
            gvCompras.DataSource = listaCompras;
            gvCompras.DataBind();
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region CargarCCostos
    private void CargarCCostos()
    {
        try
        {
            List<CentrosCostos> listaCCostos = new List<CentrosCostos>();
            BMCentrosCostos bmCCostos = new BMCentrosCostos(Connection);
            listaCCostos = bmCCostos.BMCentrosCostosGetAllActivos();
            foreach (CentrosCostos ccostos in listaCCostos)
            {
                ListItem liItem = new ListItem();
                liItem.Value = ccostos.IdCentrosCostos.ToString();
                liItem.Text = ccostos.Nombre;
                cboCCostos.Items.Add(liItem);
            }
        }
        catch (Exception ex) { ErrorUI(ex); }
    }
    #endregion

    #region registrarScript
    protected void registrarScript()
    {
        // dispararPopUp(hacePostBack)
        StringBuilder scriptSession = new StringBuilder("<script language='javascript' type='text/javascript'>");
        scriptSession.Append("function mostrarReporte()");
        scriptSession.Append("{");
        scriptSession.Append("var stringURL = '../Informes/RptComprasView.aspx';");
        scriptSession.Append("var opciones='toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes';");
        scriptSession.Append("var newWin = window.open(stringURL, 'PopUp" + DateTime.Now.Ticks.ToString() + "', opciones);");
        scriptSession.Append("}");
        scriptSession.Append("mostrarReporte();");
        scriptSession.Append("</script>");

        Page.ClientScript.RegisterStartupScript(this.GetType(), "Reporte" + Session["iReporte"].ToString(), scriptSession.ToString());
    }
    #endregion

    #endregion
}
